package com.wyix.sercvice.impl;

import com.wyix.entity.AbstractUser;
import com.wyix.entity.Order;
import com.wyix.sercvice.MerchantService;

/**
 * 具体商家类：实现商家接口 + 继承抽象用户类
 *
 * @author wangdx
 * @since 2025/8/1
 */
public class RestaurantMerchant extends AbstractUser implements MerchantService {
    private String cuisineType; // 特色菜系（商家特有属性）

    // 构造器：调用父类构造器初始化账号信息
    public RestaurantMerchant(String userId, String name, String cuisineType) {
        super(userId, name);
        this.cuisineType = cuisineType;
    }

    // 实现商家接口的"接单"方法（具体业务逻辑）
    @Override
    public Order acceptOrder(Order order) {
        if (!isOnline) {
            throw new IllegalStateException("商家[" + name + "]未登录，无法接单");
        }
        System.out.println("餐馆[" + name + "]接单：" + order.getFoodName() + "（订单" + order.getId() + "）");
        order.setStatus("已接单");
        return order;
    }

    // 实现商家接口的"备餐"方法（不同商家备餐逻辑不同）
    @Override
    public void prepareMeal(Order order) {
        System.out.println("餐馆[" + name + "]备餐中：" + order.getFoodName() + "（预计5分钟）");
        order.setStatus("备餐完成");
    }

    // 重写抽象用户类的"角色描述"方法
    @Override
    public String getRoleDesc() {
        return "商家（" + cuisineType + "）：ID=" + userId + "，姓名=" + name;
    }
}
